package com.ce.common.db.handler;

import java.util.List;

import com.ce.common.db.base.DataObject;

/**
 * 处理表的操作接口
 * @author yangenxiong
 *
 */
public interface TableHandler {

	/**
	 * 根据参数talbes, 删除这些表, 如果其中一个表删除失败, 则所有表都删除失败
	 * @author yangenxiong
	 * @param tables 需要删除的表的对象
	 * @return true 删除成功 false 删除失败
	 */
	boolean dropTables(List<DataObject> tables);
	
	/**
	 * 删除talbes集合中表里面的数据, 如果不忽略表关系, 则其中一个表的数据删除失败, 则所有表的数据都删除失败
	 * @param tables 需要删除的表的对象
	 * @param ignoreConstraint 是否忽略关联关系 true为忽略 false为不忽略
	 * @return
	 */
	boolean deleteRecord(List<DataObject> tables, boolean ignoreConstraint);
	
	/**
	 * 删除数据库中表或者视图之间的关联
	 * @throws Exception
	 */
	void dropConstraint() throws Exception;
	
	/**
	 * 恢复数据库中表或者视图之间的关联
	 * @throws Exception
	 */
	void revertConstraint() throws Exception;
}
